package com.albaba.designpattern.singleton;

import java.io.Serializable;

/**
 * @Description: 单例模式静态内部类
 * @Author zx
 * @Date 2025/2/18 17:26
 * @Version 1.0
 */
public class Singleton_006 implements Serializable {
    // 私有构造方法
    private Singleton_006() {
        System.out.println("Singleton_006 构造方法");
    }

    // 在本类中创建私有静态的全局对象
    private volatile static Singleton_006 instance;


    // 获取单例对象的静态方法
    public static Singleton_006 getInstance() {
        // 第一次判断，如果instance不为null，不进入强锁阶段，直接返回实例
        if (instance == null) {
            synchronized (Singleton_006.class) {
                // 第二次判断，抢到锁之后再次进行判断，判断是否为null
                if (instance == null) {
                    instance = new Singleton_006();
                }
            }
        }
        return instance;
    }

    // 只需要在单例类中定义readResolve方法，就可以解决序列化对于单例的破坏
    private Object readResolve() {
        return instance;
    }
}
